Widespread adoption of virtualization is rapidly revolutionizing the ways information technology (“IT”) departments procure, implement, and operate technology. As such, converged infrastructures provide dynamic pools of computing resources that are intelligently provisioned and managed to address changing demands of customers. For example, a converged infrastructure may include pools of compute, storage, and network devices that may be shared and accessed by multiple applications. Integrating, validating, managing, and optimizing such components is often a drain on IT resources. Accordingly, pre-configured, pre-integrated, and validated infrastructures are highly desirable to customers.
Generally, a typical converged architecture includes a central shared storage attached to the physical servers where flash storage is generally used for high-performance applications and for caching storage from the attached disk-based storage. In a hyper-converged infrastructure, on the other hand, the storage controller function runs as a service on each node in the cluster to improve scalability and resilience. One particular issue with hyper-converged infrastructures includes an efficient way to manage storage input/output (IO) throughput and network usage for situations like contention when multiple IO intensive clients/applications run for the same IO resources. For example, critical application/clients may be unable to acquire adequate disk IO throughput and network bandwidth due to non-critical applications/clients utilizing the same resources of the infrastructure. Generally, there are no effective mechanisms for a controllable disk IO throughput allocation over the sharing applications/clients in one single hyper-converged infrastructure environment.